package com.mapaower.project.dao;

import com.mapaower.project.entity.Project;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 项目数据访问接口
 * 提供项目相关的数据库操作方法
 */
@Repository
public interface ProjectRepository extends JpaRepository<Project, Long> {

    /**
     * 根据创建者ID查找项目
     * @param creatorId 创建者ID
     * @return 项目列表
     */
    List<Project> findByCreatorId(Long creatorId);

    /**
     * 根据项目状态查找项目
     * @param status 项目状态
     * @return 项目列表
     */
    List<Project> findByStatus(Project.ProjectStatus status);

    /**
     * 根据是否付费查看查找项目
     * @param isPremium 是否付费查看
     * @return 项目列表
     */
    List<Project> findByIsPremium(Boolean isPremium);

    /**
     * 根据项目类型和状态查找项目
     * @param type 项目类型
     * @param status 项目状态
     * @return 项目列表
     */
    List<Project> findByTypeAndStatus(Project.ProjectType type, Project.ProjectStatus status);

    /**
     * 搜索项目标题或描述中包含关键词的项目
     * @param keyword 搜索关键词
     * @return 项目列表
     */
    List<Project> findByTitleContainingOrDescriptionContaining(String keyword, String keywordAgain);
}